﻿using System.Data;
using System.ComponentModel;
using System.Text.RegularExpressions;
namespace Innvoice.Logica.GestorObject.Articulo
{
    public class CategoriaArticulo : INotifyPropertyChanged, IDataErrorInfo
    {
        #region Event

        public event PropertyChangedEventHandler PropertyChanged;

        #endregion

        #region Properties

        private int _codigo;
        public int Codigo
        {
            get
            {
                return this._codigo;
            }
            set
            {
                if (this._codigo == value)
                {
                    return;
                }
                this._codigo = value;
            }
        }

        private string _descripcion;
        public string Descripcion
        {
            get
            {
                return this._descripcion;
            }
            set
            {
                if (this._descripcion == value)
                {
                    return;
                }
                this._descripcion = value;
                if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs("Descripcion"));
            }
        }

        private byte _activo;
        public byte Activo
        {
            get
            {
                return this._activo;
            }
            set
            {
                if (this._activo == value)
                {
                    return;
                }
                this._activo = value;
            }
        }

        public string Error
        {
            get
            {
                return null;
            }
        }

        public string this[string propertyName]
        {
            get
            {
                return IsValid(propertyName);
            }
        }
        
        #endregion Properties

        #region Contructor

        public CategoriaArticulo()
        {
            _activo = 1;
        }

        #endregion

        #region Methods

        private string IsValid(string propertyName)
        {
            switch (propertyName)
            {
                case "Descripcion":
                    if (string.IsNullOrWhiteSpace(Descripcion))
                        return "El campo Descripcion es requerido";
                    else
                    {
                        Regex regEx;
                        regEx = new Regex(@"[a-zA-ZñÑ\s]{2,50}");
                        if (!regEx.IsMatch(Descripcion))
                            return "El campo Descripcion no " +
                                " tiene un formato correcto";
                    }
                    break;
            }
            return null;
        }

        public bool IsValid()
        {
            return string.IsNullOrEmpty(IsValid("Descripcion"));
        }

        #endregion
    }
}